.TITLE NVRUP .IDENT /01.01/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; THIS SOFTWARE IS FURNISHED UNDER LICENSE AND MAY ONLY BE USED ; OR COPIED ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; VERSION 01.01 ; ; M. C. OZUR 16-APR-82 ; ; MODIFIED BY: ; ; ; T. LEKAS 3-JUNE-82 01.01 ; ; TL191 -- CHANGE REFERENCES TO $CTFEA AND CF. ; TO THE SECOND HARDWARE FEATURE MASK WORD ; ; MACRO LIBRARY CALLS ; .MCALL HWDDF$ HWDDF$ ; DEFINE HARDWARE REGISTERS .ENABL LC ; ; INCREMENT THE KEYSTROKE COUNT IN THE NVR ; $KEYUP::BIT #H2.NVR,$HFMSK+2 ;NVR PRESENT? BEQ 10$ ;IF EQ NO SEC ;SET CARRY FOR INCREMENT ADCB @#N.KEY ;ADD CARRY TO FIRST BYTE ADCB @#N.KEY+2 ;CASCADE CARRY THROUGH... ADCB @#N.KEY+4 ; THE NEXT 3 BYTES ADCB @#N.KEY+6 ; 10$: RETURN ;DONE ; ; INCREMENT THE RX50'S READ/WRITE COUNT IN THE NVR ; $DZAUP::BIT #H2.NVR,$HFMSK+2 ;NVR PRESENT? BEQ 10$ ;IF EQ NO SEC ;SET CARRY FOR INCREMENT ADCB @#N.DZA ;ADD CARRY TO FIRST BYTE ADCB @#N.DZA+2 ;CASCADE CARRY THROUGH... ADCB @#N.DZA+4 ; THE NEXT 3 BYTES ADCB @#N.DZA+6 ; 10$: RETURN ;DONE ; ; INCREMENT THE RD50'S READ/WRITE COUNT IN THE NVR ; $DWAUP::BIT #H2.NVR,$HFMSK+2 ;NVR PRESENT? BEQ 10$ ;IF EQ NO SEC ;SET CARRY FOR INCREMENT ADCB @#N.DWA ;ADD CARRY TO FIRST BYTE ADCB @#N.DWA+2 ;CASCADE CARRY THROUGH... ADCB @#N.DWA+4 ; THE NEXT 3 BYTES ADCB @#N.DWA+6 ; 10$: RETURN ;DONE ; ; INCREMENT THE MINUTES OF O/S UPTIME IN THE NVR ; $UPTUP::BIT #H2.NVR,$HFMSK+2 ;NVR PRESENT? BEQ 10$ ;IF EQ NO SEC ;SET CARRY FOR INCREMENT ADCB @#N.UPT ;ADD CARRY TO FIRST BYTE ADCB @#N.UPT+2 ;CASCADE CARRY THROUGH... ADCB @#N.UPT+4 ; THE NEXT 3 BYTES ADCB @#N.UPT+6 ; MOV $NVRCT,$NVRTM ;RESET COUNTER 10$: RETURN ;DONE ;+ ; $SETCK - SETUP NONVOLATILE CLOCK (MC146818 CMOS Chip) ; ; Description: ; ; Copies the RSX date/time vector (from SYSCM) to the ; NV clock chip. This is done when the date/time vector ; is modified via the SET TIME directive. Once the chip ; is update, RSX and the clock chip maintain time ; independently of each other. The clock chip will be ; read at boot time to reload the RSX date/time vector. ;- $SETCK::MOV $CKCSR,R5 ;GET THE CT CLOCK CSR2 BIS #206,-2(R5) ;ENABLE "SET" MODE, BINARY DATA, 24 HOUR. ; UPDATES INHIBITED. 5$: BIT #200,-4(R5) ;IS AN UPDATE IN PROGRESS BNE 5$ ;IF NE, YES WAIT FOR COMPLETION MOV #$TTNS,R4 ;GET POINTER TO SECONDS VECTOR MOV R5,R3 ;POINT TO SECONDS... SUB #30,R3 ; IN THE CLOCK CHIP MOV #3,R2 ;COPY SECONDS, MINUTES, HOURS 10$: MOV -(R4),(R3)+ ;MOVE IT CLR (R3)+ ;CLEAR THE ALARMS SOB R2,10$ ;DONE? CLR (R3)+ ;CLEAR DAY OF WEEK MOV #3,R2 ;COPY DAY, MONTH, YEAR 20$: MOV -(R4),(R3)+ ;MOVE IT SOB R2,20$ ;DONE? BIC #200,-2(R5) ;DISABLE "SET" MODE. UPDATE STARTED. RETURN ;DONE .END